/**
 * 构建脚本 - 打包小红书发布模块
 */

const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');

const projectRoot = path.join(__dirname, '..');
const buildDir = path.join(projectRoot, 'build');

console.log('🚀 开始构建小红书发布模块...');

// 创建构建目录
if (!fs.existsSync(buildDir)) {
  fs.mkdirSync(buildDir, { recursive: true });
}

// 创建发布包
function createReleasePackage() {
  console.log('📦 创建发布包...');
  
  const packageName = `xiaohongshu-electron-publisher-v${require('../package.json').version}`;
  const packageDir = path.join(buildDir, packageName);
  
  // 创建包目录
  if (fs.existsSync(packageDir)) {
    fs.rmSync(packageDir, { recursive: true, force: true });
  }
  fs.mkdirSync(packageDir, { recursive: true });
  
  // 复制必要文件
  const filesToCopy = [
    'lib/',
    'examples/',
    'data/',
    'package.json',
    'README.md'
  ];
  
  filesToCopy.forEach(file => {
    const srcPath = path.join(projectRoot, file);
    const destPath = path.join(packageDir, file);
    
    if (fs.existsSync(srcPath)) {
      if (fs.statSync(srcPath).isDirectory()) {
        fs.cpSync(srcPath, destPath, { recursive: true });
      } else {
        fs.copyFileSync(srcPath, destPath);
      }
      console.log(`✅ 复制: ${file}`);
    }
  });
  
  // 创建安装脚本
  const installScript = `#!/bin/bash
# 小红书发布模块安装脚本

echo "🚀 开始安装小红书发布模块..."

# 检查 Node.js
if ! command -v node &> /dev/null; then
    echo "❌ 请先安装 Node.js"
    exit 1
fi

# 安装依赖
echo "📦 安装依赖..."
npm install sqlite3 electron-store

echo "✅ 安装完成!"
echo ""
echo "📖 使用方法:"
echo "const XiaohongshuElectronPublisher = require('./lib/index');"
echo ""
echo "📚 查看完整文档: README.md"
`;
  
  fs.writeFileSync(path.join(packageDir, 'install.sh'), installScript);
  fs.chmodSync(path.join(packageDir, 'install.sh'), '755');
  
  // 创建快速开始示例
  const quickStartExample = `// 快速开始示例
const { app, BrowserWindow } = require('electron');
const XiaohongshuElectronPublisher = require('./lib/index');

let mainWindow;
let xiaohongshuPublisher;

function createWindow() {
  mainWindow = new BrowserWindow({
    width: 1200,
    height: 800,
    webPreferences: {
      nodeIntegration: true,
      contextIsolation: false
    }
  });

  mainWindow.loadFile('index.html');
}

app.whenReady().then(async () => {
  createWindow();
  
  // 🎯 只需这几行代码即可集成小红书发布功能！
  xiaohongshuPublisher = new XiaohongshuElectronPublisher({
    mainWindow: mainWindow
  });

  console.log('✅ 小红书发布模块已就绪！');
});

app.on('before-quit', async () => {
  if (xiaohongshuPublisher) {
    await xiaohongshuPublisher.close();
  }
});
`;
  
  fs.writeFileSync(path.join(packageDir, 'quick-start.js'), quickStartExample);
  
  console.log(`✅ 发布包创建完成: ${packageName}/`);
  return packageDir;
}

// 创建压缩包
async function createZipPackage(packageDir) {
  try {
    console.log('🗜️ 创建压缩包...');
    
    const packageName = path.basename(packageDir);
    const zipPath = path.join(buildDir, `${packageName}.zip`);
    
    // 删除现有的zip文件
    if (fs.existsSync(zipPath)) {
      fs.unlinkSync(zipPath);
    }
    
    // 创建zip文件
    execSync(`cd "${buildDir}" && zip -r "${packageName}.zip" "${packageName}"`, { 
      stdio: 'inherit' 
    });
    
    // 获取文件大小
    const stats = fs.statSync(zipPath);
    const fileSize = (stats.size / 1024).toFixed(2);
    
    console.log(`✅ 压缩包创建完成: ${packageName}.zip (${fileSize} KB)`);
    
    return zipPath;
  } catch (error) {
    console.error('❌ 创建压缩包失败:', error.message);
    throw error;
  }
}

// 创建发布说明
function createReleaseNotes() {
  const version = require('../package.json').version;
  const releaseNotes = `# 小红书发布器模块 v${version}

## 📦 发布包说明

这是一个完整的小红书自动发布 Electron 模块，可以直接集成到任何 Electron 项目中。

## 🚀 快速安装

### 方式一：直接使用
1. 解压文件包
2. 将 \`xiaohongshu-electron-publisher\` 文件夹复制到您的项目中
3. 运行 \`./install.sh\` 安装依赖

### 方式二：查看示例
1. 进入 \`examples/\` 目录
2. 运行 \`npm install electron\`
3. 运行 \`npx electron main.js\`

## ✨ 主要功能

- 🎯 **多账号管理** - 支持多个小红书账号独立管理
- 🤖 **智能自动化** - 自动填写标题、描述、标签内容  
- 📱 **图文发布** - 支持图片内容发布
- ⏰ **定时发布** - 支持定时发布功能
- 🔐 **Cookie验证** - Cookie 有效性验证和管理
- 📊 **发布记录** - 完整的发布历史追踪
- 🔐 **安全认证** - Cookie 安全存储和管理

## 📋 集成方法

在您的 \`main.js\` 中添加：

\`\`\`javascript
const XiaohongshuElectronPublisher = require('./xiaohongshu-electron-publisher');

const xiaohongshuPublisher = new XiaohongshuElectronPublisher({
  mainWindow: mainWindow
});
\`\`\`

查看 README.md 获取完整的使用文档。

---

构建时间: ${new Date().toLocaleString('zh-CN')}
`;

  fs.writeFileSync(path.join(buildDir, 'RELEASE_NOTES.md'), releaseNotes);
  console.log('✅ 发布说明已创建');
}

// 主构建流程
async function main() {
  try {
    const startTime = Date.now();
    
    // 创建发布包
    const packageDir = createReleasePackage();
    
    // 创建压缩包
    await createZipPackage(packageDir);
    
    // 创建发布说明
    createReleaseNotes();
    
    const endTime = Date.now();
    const duration = ((endTime - startTime) / 1000).toFixed(2);
    
    console.log('\n🎉 构建完成！');
    console.log('==========================================');
    console.log(`⏱️ 构建时间: ${duration} 秒`);
    console.log(`📂 输出目录: ${buildDir}`);
    console.log('');
    console.log('📦 生成的文件:');
    const files = fs.readdirSync(buildDir);
    files.forEach(file => {
      const filePath = path.join(buildDir, file);
      const stats = fs.statSync(filePath);
      if (stats.isFile()) {
        const size = (stats.size / 1024).toFixed(2);
        console.log(`  📄 ${file} (${size} KB)`);
      } else {
        console.log(`  📁 ${file}/`);
      }
    });
    
    console.log('\n🚀 使用方法:');
    console.log('1. 解压 zip 文件');
    console.log('2. 将 xiaohongshu-electron-publisher 文件夹复制到您的项目');
    console.log('3. 按照 README.md 集成到您的项目');
    console.log('4. 运行示例：cd examples && npm install electron && npx electron main.js');
    
  } catch (error) {
    console.error('\n❌ 构建失败:', error.message);
    process.exit(1);
  }
}

// 运行构建
main();
